const cp = require('cp');
const YHT = require('YHT');
let tokenUnableListener = function(obj) { // 当token不合法时，SDK会回调此方法
  cp.ajaxContract({
    controller: 'contract',
    cmd: 'com.rel.porg.pb.get_contract_token_req',
    cache: false,
    success: (data, textStatus, jqXHR) => {
      YHT.setToken(data.ctoken);// 重新设置token
      YHT.do(obj);
    },
    error: data => {
      console.log(data);
    },
  });
};
YHT.init('2017101015343500001', tokenUnableListener);

let moduleExport = {};
require('./page.css');
const OBJ_PROCESS = {
  0: { // step1
    'nolink': {
      'class': '',
      'href': 'javascript:;',
      'text': '未签署',
    },
    0: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step1/edit',
      'text': '去填写',
    },
    1: {
      'class': 'f-c-green',
      'href': 'javascript:;',
      'text': '审核中',
    },
    2: {
      'class': 'f-c-green',
      'href': 'javascript:;',
      'text': '审核成功',
    },
    3: {
      'class': 'f-c-red',
      'href': '#!/myshop/apply/step1/edit',
      'text': '审核失败',
    },
  },
  1: { // step2
    'nolink': {
      'class': '',
      'href': 'javascript:;',
      'text': '未签署',
    },
    0: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step2/edit',
      'text': '未签署',
    },
    1: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step2/edit',
      'text': '未签署',
    },
    2: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step2/edit',
      'text': '未签署',
    },
    3: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step2/edit',
      'text': '已签署',
    },
  },
  2: { // step3
    'nolink': {
      'class': '',
      'href': 'javascript:;',
      'text': '未选择',
    },
    0: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step3/edit',
      'text': '去选择',
    },
    1: {
      'class': 'f-c-green',
      'href': '#!/myshop/decoration', // 跳转到装修店铺
      'text': '需要获取的模板名称',
    },
  },
  3: { // step4
    'nolink': {
      'class': '',
      'href': 'javascript:;',
      'text': '未授权',
    },
    0: {
      'class': 'f-c-green',
      'href': '#!/myshop/apply/step4/edit',
      'text': '去授权',
    },
    1: {
      'class': 'f-c-green',
      'href': '#!/third/wxapp',
      'text': '已授权',
    },
  },
};
let vm = avalon.define({
  $id: 'mc_apply',
  test: 'avalontest',
  process: -1, // 店铺状态：-1.未开始 1.提交资料 2.签署合同 3.购买店铺 4.第三方授权
  obj_process: {}, // 储存每个step的状态
  sktid: 0, // 是否有开通过 0.未开通
  getProcess: (step, type) => {
    switch (type) {
      case 'step':
        if (step < vm.process) {
          return 's-icon-on';
        } else {
          return 's-icon-off';
        }
    }
  },
  getStepStatus: (step, type) => {
    if (vm.sktid === 0) {
      switch (type) {
        case 'href':
          return 'javascript: void(0);';
        case 'class':
          return '';
        default:
          return OBJ_PROCESS[step]['nolink']['text'];
      }
    } else {
      switch (vm.process) {
        case -1:
          if (step === 0) {
            if (vm.obj_process[step].status === -1) {
              return OBJ_PROCESS[0][0][type];
            } else {
              return OBJ_PROCESS[0][vm.obj_process[step].status][type];
            }
          } else {
            return OBJ_PROCESS[step]['nolink'][type];
          }
        default:
          if (vm.process < step) {
            return OBJ_PROCESS[step]['nolink'][type];
          } else {
            if (vm.obj_process[step].status === -1) {
              return OBJ_PROCESS[step][0][type];
            } else {
              if (vm.process > 2 && step === 2 && type === 'text') {
                return vm.obj_process[step].shoptempname;
              } else {
                return OBJ_PROCESS[step][vm.obj_process[step].status][type];
              }
            }
          }
      }
    }
  },
  getTipsIcon: process => {
    if (vm.sktid === 0) {
      return 'u-tips-warning';
    } else {
      switch (process) {
        case -1:
          switch (vm.obj_process[0].status) {
            case 2:
              return 'u-tips-success';
            case 3:
              return 'u-tips-danger';
            default:
              return 'u-tips-warning';
          }
        case 4:
          return 'u-tips-success';
        default:
          return 'u-tips-warning';
      }
    }
  },
  getTips: process => {
    if (vm.sktid === 0) {
      return '未开通';
    } else {
      switch (process) {
        case -1:
          switch (vm.obj_process[0].status) {
            case -1:
              return '请填写资料尽快提交审核';
            case 1:
              return '你的资料已提交审核，将在1-5个工作日内审核完成，请耐心等待';
            default:
              return '你的资料被驳回，请尽快修改后重新提交';
          }
        case 1:
          return '请尽快签署《活动号店铺协议》完成开通店铺';
        case 2:
          return '选择对应业务领域的店铺模板，更好的开展商业活动服务';
        case 3:
          return '将店铺发布到微信、支付宝，获取更多流量';
        default:
          return '已开通店铺';
      }
    }
  },
  bindApply: () => {
    if (vm.sktid === 0) {
      cp.ajaxUrl({
        controller: 'shopskt',
        cmd: 'com.rel.porg.pb.com_shop_skt_req',
        data: {},
        success: res => {
          vm.init();
          avalon.router.navigate('myshop/apply/step1/edit', 2);
        },
        fail: res => {
          cp.layerMsg('开通失败，请稍后再试');
        },
      });
    }
  },
  bindGetContract: () => {
    if (vm.process !== -1) {
      let newtab = window.open('about:blank');
      cp.ajaxContract({
        controller: 'contract',
        cmd: 'com.rel.porg.pb.direct_create_contract_req',
        async: false, // 请使用同步
        // cache: false,
        data: {},
        success: (data, textStatus, jqXHR) => {
          YHT.queryContract(
            function successFun(url) {
              newtab.location = url;
            },
            function failFun(data) {
              console.log('fail:' + data);
            },
            data.contractid,
            data.backurl,
            data.noticeparams // "签署合同"
          );
        },
        fail: res => {
          cp.layerMsg(res.desc);
        },
        error: data => {
          console.log(data);
        },
      });
    }
  },
  init: () => {
    cp.ajaxUrl({
      controller: 'shopskt',
      cmd: 'com.rel.porg.pb.shop_sel_skt_req',
      async: false,
      data: {},
      success: res => {
        vm.obj_process = {
          0: res.auditinfo,
          1: res.contractinfo,
          2: res.tempinfo,
          3: res.thirdpinfo,
        };
        vm.process = res.sktinfo.process;
        vm.sktid = res.sktinfo.id;
      },
      fail: res => {
        vm.sktid = 0;
        vm.process = -1;
      },
    });
    // vm.obj_process = {
    //   0: {
    //     createtime: 1508985927000,
    //     id: 14,
    //     sktid: 18,
    //     status: 2,
    //     updatetime: 1508985927000,
    //   },
    //   1: {
    //     createtime: 1508985927000,
    //     id: 14,
    //     sktid: 18,
    //     status: -1,
    //     updatetime: 1508985927000,
    //   },
    //   2: {
    //     createtime: 1508985927000,
    //     id: 14,
    //     sktid: 18,
    //     status: -1,
    //     updatetime: 1508985927000,
    //   },
    //   3: {
    //     createtime: 1508985927000,
    //     id: 14,
    //     sktid: 18,
    //     status: -1,
    //     updatetime: 1508985927000,
    //   },
    // };
    // vm.sktid = 18;
    // vm.process = 1;
  },
});
vm.init();
moduleExport.content = require('./content.html');
moduleExport.vm = vm;
module.exports = moduleExport;
